To communicate with one another, computers use various protocols and message formats. A computer system is only able to interpret messages in formats for which the computer system includes an appropriate serialization stack used to convert the message to usable application data or objects. As such, computing systems may include application programming interfaces (APIs) which developers use to program the computer system to incorporate certain functionality, while allowing appropriate message formats to be implemented for inter-computer system communication.
In recent years, use of the eXtensible Markup Language (XML) has become increasingly prevalent in business. This trend is largely attributable to the flexibility of XML as a mechanism for defining the structure and content of data. XML is a self-descriptive markup language that is finding ever wider application as a data transmission and processing tool. XML is efficient at describing and defining data and is therefore used ever increasingly in data intensive applications. In this way, XML is different from HTML, which was designed for displaying data. XML data can be readily transmitted between computers using any type of data transmission media. XML data can be processed using computer programs and other suitably configured applications. An XML file may be received by an application and processed to generate an output. XML allows users to define schemas comprising a set of elements and attributes in a structural relationship to define a non-programming language specific data type (i.e. a data type that is defined without use of particular programming language). The elements and attributes defined in an XML schema may then be used as “tags” or labels in one or more XML instance documents (i.e. XML documents conforming to an XML schema and containing actual data) which may instantiate earlier defined data types. When XML instance documents are forwarded to other users or enterprises, the XML schema may be used by the recipient to “understand” and/or validate the instance document. Sharing of data across divergent operating systems and platforms is thus supported.
As might be imagined, all formats are not compatible with one another. For example, Web Services is a standardized way of integrating applications. Standardized XML documents can be used with SOAP (Simple Object Access Protocol) messages and WSDL (Web Services Description Language) descriptions to integrate applications without an extensive knowledge of the applications being integrated. Alternatively, a text-based dynamic language designed for human-readable data interchange, such as JavaScript Object Notation (JSON) may be used as a format for sending data. Each of these formats is interpreted by different incompatible serialization stacks. Some of the difficulty in interchanging XML and JSON arises from different format requirements. XML messages always include a root name, whereas some dynamic languages, such as JSON, do not include a root name. In general, XML element contents do not have type assignments, whereas contents of dynamic language elements, such as JSON Boolean, string, and number elements, often have type assignments. It can be understood that the generation of an XML schema from JSON data can present multiple difficulties. Further difficulties can arise during parsing, validating and transformation of JSON data using such schemas if the schema does not match the JSON data. It is for these, and other, reasons that schemas are often manually created using a human actor.